[英]ForeignKey django 1.1.1 model
我有
class staff_name(models.Model):
firstname = models.CharField(max_length=150)
surname = models.CharField(max_length=150)
class inventory_transaction(models.Model):
staffs = models.ForeignKey(staff_name)
我想通過stocker_transaction獲取或創建員工姓氏和名字
我在下面使用了這些代碼
inventory_transaction.objects.get_or_create(staffs__surname__contains=sname,staffs__firstname__contains=fname)
我收到此錯誤"staffs__surname__contains can not be defined"
我做錯了什么?
謝謝
嗯,基於get_or_create()
的文檔:
用英語來說,這意味着從任何不包含雙下划線(表示未精確查找)的非 “ defaults”關鍵字參數開始。
我想說您想做的事是不可能的,因為您的查詢可能返回多個結果。 傳遞給get_or_create()
的參數必須采用返回唯一結果的方式。
您可以嘗試__exact
而不是__contains
:
inventory_transaction.objects.get_or_create(staffs__surname__exact=sname,staffs__firstname__exact=fname)
但是我不認為get_or_create()
可以自動創建外鍵對象。
因此,在這種情況下,最簡單的事情可能是這樣的:
try:
itrans = inventory_transaction.objects.get(staffs__surname__contains=sname,staffs__firstname__contains=fname)
except inventory_transaction.DoesNotExist:
staff = staff_name(firstname=fname, surname=sname)
staff.save()
itrans = inventory_transaction(staffs=staff)
itrans.save()
順便說一句,慣例是對類使用大寫名稱,而在數據庫查找中也使用下划線,因此我不會使用下划線。 也就是說,將您的類重命名為StaffName
和InventoryTransaction
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.