簡體   English   中英

Django:非主外鍵對象無法訪問相關模型實例

[英]Django: Non-primary Foreign Key object can't access related model instance

我是 Django 的新手。 我在models.py中有 2 類tech_system和設備

class tech_system(models.Model):
    id_tech_system = models.BigAutoField(db_column='ID_tech_system', primary_key=True)
    system_descript_short = models.CharField(max_length=255, blank=True, null=True)
    #More field here
    tech_system_code = models.CharField(unique=True, max_length=40)

    class Meta:
        managed = False
        db_table = 'tech_system'
        
    def __str__(self):
        return self.system_descript_short

        
class equiptment(models.Model):
    id_thietbi = models.BigAutoField(db_column='ID_thietbi', primary_key=True)
    tech_system_code = models.ForeignKey('tech_system', models.DO_NOTHING, db_column="tech_system_code", blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'equiptment'

我使用python shell,設備模型對象無法訪問相關的tech_system模型實例。 我得到錯誤匹配查詢不存在。 我想得到值obj1.equiptment.tech_system_code.system_descript_short 我能怎么做?

謝謝你。

>>> obj1 = equiptment.objects.first()
>>> obj1.tech_system_code_id
'530'
>>> obj1.tech_system_code
Traceback (most recent call last):
  File "D:\Dev1\env1\lib\site-packages\django\db\models\fields\related_descriptors.py", line 173, in __get__
    rel_obj = self.field.get_cached_value(instance)
  File "D:\Dev1\env1\lib\site-packages\django\db\models\fields\mixins.py", line 15, in get_cached_value
    return instance._state.fields_cache[cache_name]
KeyError: 'tech_system_code'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "D:\Dev1\env1\lib\site-packages\django\db\models\fields\related_descriptors.py", line 187, in __get__
    rel_obj = self.get_object(instance)
  File "D:\Dev1\env1\lib\site-packages\django\db\models\fields\related_descriptors.py", line 154, in get_object
    return qs.get(self.field.get_reverse_related_filter(instance))
  File "D:\Dev1\env1\lib\site-packages\django\db\models\query.py", line 437, in get
    self.model._meta.object_name
app.models.tech_system.DoesNotExist: tech_system matching query does not exist.

我發現 tech_system_code 記錄被分配為 str 類型,而不是設備模型中的對象。 導入數據庫的記錄值不正確。 謝謝你的幫助。

暫無
暫無

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

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