django - 从 django 中的模型继承字段
问题描述
我希望从 UserProfile 模型继承我的 Comments 模型中的 user_image、email 和 name 字段。我尝试在我的 ForeignKey 字段中使用 UserProfile.profile_image 作为基类,但它显然没有用。我知道这是错误的,但任何替代方案都可以。
class UserProfile(AbstractUser):
username = None
bio = models.TextField(null=True, blank=True)
profile_image = models.FileField(upload_to="profile_pic", blank=True, null=True)
USERNAME_FIELD = 'email'
def __str__(self):
return self.email
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments', null=True)
name = models.CharField(max_length=150)
user_image = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
email = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
body = models.TextField()
created_date = models.DateTimeField(auto_now_add=True)
active = models.BooleanField(default=False)
class Meta:
ordering = ['created_date']
def __str__(self):
return '{} comment made by {}'.format(self.body, self.name)
解决方案
如果您想将每个评论与用户相关联,只需
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments', null=True)
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
# ...
def __str__(self):
return '{} comment made by {}'.format(self.body, self.user)
然后,您可以使用 etc. 访问用户的图像comment.user.profile_image
等。
这具有删除重复数据的优势,但如果用户更改了他们的电子邮件或其他信息,它也会“追溯”更改为评论。如果您想避免这种情况,最好将数据复制到模型上的类似字段中(但也要保留该user
字段,以用于簿记目的):
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments', null=True)
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
user_profile_image = models.FileField(upload_to="profile_pic", blank=True, null=True)
user_email = ...
推荐阅读
- ios - 如何根据图像的类别(例如汽车,抽象)从 Firebase 存储中检索图像
- android - 如何在单独的 Java 文件中制作警报对话框?
- c# - c#访问OleDB err 80004005
- python - Scipy 稀疏矩阵切片返回 IndexError
- python - 为什么我们不能在生成器中分配默认参数?
- c# - 使用 OWIN SelfHost 时调用 httpclient 会引发 404 响应
- c++ - 使用 ClipboardSetData 函数设置远程机器剪贴板的内容
- android - 如何使用身体发出 android Volley 请求,如下所示
- android - 代号一,在安卓问题上发送短信
- python - Tensorflow - 条件训练