我有两个模型:
class BusinessCard(models.Model):
name = models.CharField(_("name"),null=True,max_length=50)
class Contacts(models.Model):
businesscard_id = models.OneToOneField(BusinessCard,null=True,blank=True,related_name='contact_detail',db_column="businesscard_id")
bcard_json_data = JsonField(null=True)
我只想使用名片模型访问联系人模型数据:
target_bacard=BusinessCard.objects.filter(id=target_bacard_id).select_related()
当我们访问target_bacard.contact_detail
时,它会给出关键错误。
如何使用target\u bacard queryset获取联系人数据。你知道吗
您尚未传递相关模型(字段)参数以选择\u related()
假设名片的
id
是唯一的,您可能希望使用...objects.get(id=target_bacard_id)
代替...objects.filter(id=target_bacard_id)
。无论如何,select\ u related()将在两种方式上都起作用。你知道吗select\u related()用于保存数据库查询。 这是documentation
使用
get()
而不是filter()
,如:如果要访问与名片实例呈1对1关系的Contacts实例,请使用在Contacts中指定的相关名称:
此外,您还有一些误导性的名称:Contacts应该是Contact,因为此模型的实例仅表示一个联系人。它的字段businesscard\u id最好命名为businesscard(注意,在这种情况下,表列将在数据库级别自动调用businesscard\u id,并存储相关businesscard的id),因为在ORM中,访问它时会得到一个businesscard模型实例,不仅仅是它的id。你知道吗
相关问题 更多 >
编程相关推荐