[英]How to dynamically select django model fields in views.py
[英]Django. How to get fields from child model in views.py?
如何從views.py
子模型獲取字段? 例如,我有父模型BasicOrder
和子模型(擴展BasicOrder
) TouristVisa
。
我正在使用 Django 2.0.2 和 Python 3.6.1。 我的models.py
是:
class BasicOrder(models.Model):
user = models.ForeignKey(User, verbose_name=_('User'), on_delete=models.CASCADE)
status = models.PositiveIntegerField(_('Status'), choices=ORDER_STATUS, default=0)
def __str__(self):
return 'Order #{}'.format(self.id)
class TouristVisa(BasicOrder, models.Model):
citizenship = models.ForeignKey(
Citizenship, verbose_name=_('Citizenship'), on_delete=models.PROTECT
)
invitation_entry = models.PositiveSmallIntegerField(
_('Invitation entry'), choices=INVITATION_ENTRY
)
class Meta:
ordering = ['id']
能夠訪問來自子模型( TouristVisa
)的字段invitation_entry
TouristVisa
。 我在views.py
嘗試這種方式:
order = BasicOrder.objects.get(user=request.user.id)
print(order.invitation_entry)
但它的顯示錯誤:
AttributeError: 'BasicOrder' 對象沒有屬性 'invitation_entry'
這是錯誤的,當TouristVisa 從BasicOrder 繼承時,它意味着它也獲得了用戶和狀態字段,而不是相反。 因此,您可以訪問invitation_entry 字段,但也可以調用TouristVisa,因為它是唯一存在的模型。
現在,像這樣訪問它:
order = BasicOrder.objects.get(user=request.user.id)
print(order.touristvisa.invitation_entry)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.