我有一個用戶模型
class Account(AbstractBaseUser):
first_name = models.CharField(max_length = 255, unique = False)
last_name = models.CharField(max_length = 255, unique = False)
email = models.EmailField(verbose_name = "email", max_length = 60, unique = True)
is_sponsor = models.BooleanField(blank=True, default=True, help_text='Check if the user is a sponsor', verbose_name='Is this user a sponsor?')
sponsored_by = models.ForeignKey('self',blank=True,null=True, on_delete=models.SET_NULL, default=None,limit_choices_to={'is_sponsor': True}),
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = [
'first_name',
'last_name',
]
我創建了一個需要使用“sponsor_by”的屬性
@property
def sponsored_by_test(self):
if self.sponsored_by is not None:
if self.sponsored_by.first_name=="test":
return True
return False
當我測驗它時,
x = Account.objects.get(first_name="test")
print(x.sponsored_by)
>>> (<django.db.models.fields.related.ForeignKey>,)
因此,我無法訪問屬性(或任何地方)中的“sponsor_by”變數。
我在這里錯過了什么嗎?
uj5u.com熱心網友回復:
您需要呼叫該屬性x.sponsored_by_testnot x.sponsored_by。
uj5u.com熱心網友回復:
很簡單:
In [11]: b = Account.objects.create(first_name='test2', last_name='2', email='[email protected]')
In [12]: x.sponsored_by=b
In [13]: x.save()
In [14]: print(x.sponsored_by)
123@qq.com2
為物業
@property
def sponsored_by_test(self):
return getattr(self.sponsored_by, 'first_name', None) == "test"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340992.html
上一篇:Django未在開發中渲染影像
