Django-如何从一个模型到另一个模型使用一个字段?
我有两种型号Django-如何从一个模型到另一个模型使用一个字段?,django,django-models,Django,Django Models,我有两种型号GeneralUser和UserVoteNews,它使用User作为外键。我想在GeneralUser中添加一个布尔字段,并想在UserVoteNews模型中访问它。我怎样才能做到这一点 class GeneralUser(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) ban = models.BooleanField(default=True) class UserV
GeneralUser
和UserVoteNews
,它使用User作为外键。我想在GeneralUser
中添加一个布尔字段,并想在UserVoteNews
模型中访问它。我怎样才能做到这一点
class GeneralUser(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ban = models.BooleanField(default=True)
class UserVoteNews(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ban = ??
我会为ban field制作一个模型。等等
class allUser(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ban = models.BooleanField(default=True)
class GeneralUser(models.Model):
user = models.ForeignKey(allUser, on_delete=models.CASCADE)
class UserVoteNews(models.Model):
user =models.ForeignKey(allUser, on_delete=models.CASCADE)
我会为ban field制作一个模型。等等
class allUser(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ban = models.BooleanField(default=True)
class GeneralUser(models.Model):
user = models.ForeignKey(allUser, on_delete=models.CASCADE)
class UserVoteNews(models.Model):
user =models.ForeignKey(allUser, on_delete=models.CASCADE)
使用以下方法代替字段:
但是,如果您在GeneralUser
和User
模型之间建立了关系,这将是一个很好的设计。然后你可以简单地使用:
@property
def ban(self):
return self.user.generaluser.ban
使用以下方法代替字段:
但是,如果您在GeneralUser
和User
模型之间建立了关系,这将是一个很好的设计。然后你可以简单地使用:
@property
def ban(self):
return self.user.generaluser.ban
嗯,由于一个
用户
可以有多个通用用户
与其关联,因此任何用户都没有一个ban
值。因此,没有一个值可以访问。您想要哪个值?我想要每个用户的ban值。id每个用户没有一个ban值。id,可以有多个ban值。您想要哪一个?一个用户可以有多个GeneralUser
实例。你想要哪一个?我的错,我说错了。在每个普通用户实例@ruddawell的want ban值中,由于一个用户
可以有多个GeneralUser
与其关联,因此任何用户都没有一个ban
值。因此,没有一个值可以访问。您想要哪个值?我想要每个用户的ban值。id每个用户没有一个ban值。id,可以有多个ban值。您想要哪一个?一个用户可以有多个GeneralUser
实例。你想要哪一个?我的错,我说错了。在每个普通用户实例@ruddra的want-ban-value中,您能帮助我理解每个ban-value、最新的ban-value和任何ban-value之间的差异吗?此外,我还不了解最佳实践。如果可能,给我一些资源!OneToOne字段提供了一个限制,即不能使用一个用户对象创建多个GeneralUser实例。它还将使您比以相反的方式访问实例更有优势。您可以通过User\u对象从User
访问GeneralUser
实例。GeneralUser
。每个ban值都将返回一个带有常规用户id和ban状态的字典。最新的ban将返回为单个用户创建的最后一个GeneralUser
实例的ban状态。最后一个将返回True,如果有任何一般用户实例是banned,您可以帮助我了解每个ban值、最新的ban值和任何ban值之间的差异吗?此外,我不知道最佳实践。如果可能,给我一些资源!OneToOne字段提供了一个限制,即不能使用一个用户对象创建多个GeneralUser实例。它还将使您比以相反的方式访问实例更有优势。您可以通过User\u对象从User
访问GeneralUser
实例。GeneralUser
。每个ban值都将返回一个带有常规用户id和ban状态的字典。最新的ban将返回为单个用户创建的最后一个GeneralUser
实例的ban状态。如果有任何被禁止的普通用户实例,最后一个将返回True