Ich bin ein bisschen neu in Webapps und Datenbank-Sachen im Allgemeinen, also könnte dies eine dumme Frage sein. Ich möchte ein Modell ("CategoryModel") mit einem Feld erstellen, das auf die primäre ID einer anderen Instanz des Modells (seines übergeordneten Elements) verweist.
class CategoryModel(models.Model):
parent = models.ForeignKey(CategoryModel)
Wie mache ich das? Vielen Dank!
python
django
django-orm
sfendell
quelle
quelle
parent
anstelle von zu nennenparentId
, damy_category_model.parent
dies eine Instanz von sein wirdCategoryModel
. Django erstellt automatisch ein Mitglied,parent_id
das der Primärschlüssel des zugehörigen Modells ist.Antworten:
Sie können den Namen eines Modells als Zeichenfolge an ForeignKey übergeben, und es wird das Richtige tun.
So:
Oder Sie können die Zeichenfolge "self" verwenden
quelle
Sie können die Zeichenfolge 'self' verwenden, um eine Selbstreferenz anzugeben.
https://docs.djangoproject.com/de/dev/ref/models/fields/#foreignkey
quelle
self
beim Definieren der Modelleigenschaft nicht vorhanden ist. Wenn die Eigenschaft als Teil der__init__()
oder einer anderen Methode definiert würde, wäre dies wieself
immer das erste Positionsargument für eine Instanzmethode einer Python-Klasse.https://books.agiliq.com/projects/django-orm-cookbook/en/latest/self_fk.html
ODER
https://stackabuse.com/recursive-model-relationships-in-django/
quelle
Sie müssen auch null = True und blank = True festlegen
null = True, um in der Datenbank
blank zuzulassen = True, um die Formularvalidierung zuzulassen
quelle