簡體   English   中英

Python-從繼承模型的類繼承

[英]Python - Inherit from class which inherit Model

這是我的問題:我嘗試在

models.Model 

我的模特-

class MainModel(models.Model):
    @staticmethod
    def getIf(condition):
        results = __class__.objects.filter(condition)
        if results.count() > 0:
            return results.first()
        else:
            return None

那是一個模型

class User(MainModel):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=256)
    date_create = models.DateTimeField(auto_now_add=True)
    date_last_login = models.DateTimeField(null=True)

但是我的項目被錯誤壓垮了-

django.core.exceptions.FieldError:類“用戶”中的本地字段“ id”與基類“ MainModel”中同名的字段發生沖突。

我究竟做錯了什么?

UPD:如果要這樣做,則需要在圖層中使用Meta類

class MainModel(models.Model):
    @staticmethod
    def getIf(condition:dict):
        results = __class__.objects.filter(condition)
        if results.count() > 0:
            return results.first()
        else:
            return None

    class Meta:
        abstract = True

謝謝,但是我沒有嘗試覆蓋字段,在我的圖層中沒有一個字段沒有定義。 我找到了答案,我只需要閱讀文檔。

如果要這樣做,則需要在圖層中使用Meta類

class MainModel(models.Model):
    @staticmethod
    def getIf(condition:dict):
        results = __class__.objects.filter(condition)
        if results.count() > 0:
            return results.first()
        else:
            return None

    class Meta:
        abstract = True

Django將字段id添加到所有模型,您必須將其刪除。

好的,現在我對您的問題有了更好的了解,您的答案在那里:

在Django中-模型繼承-是否允許您覆蓋父模型的屬性?

Django已經為您的父模型添加了一個字段ID。

暫無
暫無

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

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