簡體   English   中英

沒有主鍵我無法查詢表

[英]I can't query a table without primary key

我正在嘗試通過Django中沒有Primary Key的模型進行查詢。 我需要查詢它,以便可以訪問它具有的Foreign keys

我只是在嘗試執行此atm,甚至無法正常工作:

chars = Characterweapons.objects.all()

print(chars)

例如,如果我將Characterweapons更改為Weapons ,則具有主鍵的表將起作用。

加載頁面時出現的錯誤是:

Exception Value: (1054, "Unknown column 'characterweapons.id' in 'field list'")

這是我的模型:

class Characterweapons(models.Model):
    characterid = models.ForeignKey(Characters, models.DO_NOTHING, db_column='CharacterID')  # Field name made lowercase.
    weaponid = models.ForeignKey(Weapons, models.DO_NOTHING, db_column='WeaponID', blank=True, null=True)  # Field name made lowercase.
    categoryid = models.ForeignKey(Category, models.DO_NOTHING, db_column='CategoryID', blank=True, null=True)  # Field name made lowercase.
    quantity = models.IntegerField(db_column='Quantity', blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'characterweapons'

    def __str__(self):
        return '%s %s %s %s' % (self.quantity,self.characterid,self.weaponid,self.categoryid)

有人知道嗎? 提前致謝!

因此,看起來您在現有數據庫上進行了DBinspect生成此模型。 我猜這是失敗的,因為Django ORM希望您的表具有主鍵。 “ id”是Django生成的模型主鍵字段的默認名稱。 我懷疑當您嘗試調用Characterweapons.objects.all() ,由於某種原因它試圖獲取主鍵字段。

可能有一種解決方法,但是除非您真的知道如何處理數據庫,否則我強烈建議您在表上設置主鍵。

在這種情況下,我發現的最佳解決方案是執行自己的查詢,例如:

fact = MyModelWithoutPK.objects.raw("SELECT * FROM my_model_without_pk WHERE my_search=some_search")

這樣,您無需實現或添加其他中間件。 Django文檔中查看更多

暫無
暫無

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

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