簡體   English   中英

ForeignKey django 1.1.1模型

[英]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()

順便說一句,慣例是對類使用大寫名稱,而在數據庫查找中也使用下划線,因此我不會使用下划線。 也就是說,將您的類重命名為StaffNameInventoryTransaction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM