Django: So filtern Sie Fremdschlüssel in der Detailansicht des Administrators

Tonel Daclan

core / models.py

from django.db import models
from django.db.models.signals import post_save

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    middle_name = models.CharField(max_length=30)

class Company(models.Model):
    name = models.CharField(max_length=100)


class Entity(models.Model):
    is_person = models.BooleanField(default=True)
    person = models.ForeignKey(Person, on_delete=models.PROTECT, null=True)
    company = models.ForeignKey(Company, on_delete=models.PROTECT, null=True)    
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

    @property
    def title(self):
        return self.name

    class Meta:
        verbose_name_plural = 'entities'

def post_save_person_receiver(sender, instance, created, *args, **kwargs):
    if created:
        entity, is_created = Entity.objects.get_or_create(is_person=True, person=instance, company=None, name=instance.last_name) # noqa

post_save.connect(post_save_person_receiver, sender=Person)

def post_save_company_receiver(sender, instance, created, *args, **kwargs):
    if created:
        entity, is_created = Entity.objects.get_or_create(is_person=False, person=None, company=instance, name=instance.short_name) # noqa

post_save.connect(post_save_company_receiver, sender=Company)

class Group(models.Model):
    name = models.CharField(max_length=20)
    is_individual = models.BooleanField(default=True)
    members = models.ManyToManyField(Entity, through='Membership')

class Membership(models.Model):
    group = models.ForeignKey(Group, on_delete=models.PROTECT, null=False)
    entity = models.ForeignKey(Entity, on_delete=models.PROTECT, null=False)
    class Meta:
        unique_together = ("entity", "group")

Für jede erstellte Firma und Person wird automatisch eine Entität erstellt, wobei Entity.is_person = True ist, wenn es sich um eine Person handelt. Eine Entität kann dann über eine ManyToMany-Beziehung im Mitgliedschaftsmodell Mitglied einer Gruppe wie "Mitarbeiter", "Lieferant" und "Kunde" werden.

Wie filtere ich Membership.entity in der Admin-Ansicht (zum Hinzufügen und Aktualisieren) so, dass bei der ausgewählten Gruppe "is_individual = True" (z. B. "Employee") im Entity-Feld nur "is_person = True" -Personen in der Entity-Combobox angezeigt werden?

Admin-Ansicht

Ian Kirkpatrick

Ich würde in Betracht ziehen, Ihre eigene Ansicht dazu zu schreiben. Meiner Meinung nach ist Djangos admin keine gute Seite, um ein Frontend aufzubauen. Ich verwende es nur, um schnelle Änderungen vorzunehmen, bei denen die Validierung nicht so häufig durchgeführt werden muss, da die Benutzer des Administrators wissen sollten, was sie tun. Wenn Sie anfangen, reaktionsschnellere Inhalte hinzuzufügen, denke ich darüber nach, eine andere Ansicht zu verwenden und von vorne zu beginnen (oder ein Framework), aber dennoch eine andere Ansicht.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So filtern Sie zwei Fremdschlüssel in Django

Django 1.8 So filtern Sie ein Objekt nach der ID der aktuellen generischen Detailansicht

Django-Fremdschlüssel-Anzeigewerte in der Detailansicht

So übergeben Sie pk der Detailansicht an fk des Formulars

So filtern Sie das Ergebnis mithilfe der Eigenschaft der Tabellenreferenz nach Fremdschlüssel in NHibernate

So ändern Sie True Value in Green Check in der ListView des Django-Administrators

So filtern Sie ein Modellobjekt nach dem Fremdschlüssel einer verknüpften Tabelle in Django REST

Django, So filtern Sie Daten mit einem 2-Schichten-Fremdschlüssel

Der Versuch, den Django View Serializer basierend auf dem Fremdschlüssel des verschachtelten Modells zu filtern

So filtern Sie Fremdschlüssel, die auf sich selbst zeigen

Filtern nach Fremdschlüssel in Django

Filtern nach Fremdschlüssel django

Fremdschlüssel in DetailView Django filtern

So erhalten Sie einen Fremdschlüssel-Feldnamen, der von id in django rest frame installiert wird

So erhalten Sie die Fremdschlüssel-ID anstelle des referenzierten Modells in Django-Serializern

Verwenden Sie die Aufzeichnung des gleichen Modells wie der Fremdschlüssel in Django

So filtern Sie Fremdschlüsselfelder nach Texteingabe in django-filter

So filtern Sie Django-Anmerkungen in umgekehrten Fremdschlüsselfeldern

So filtern Sie den Abfragesatz eines Fremdschlüsselfelds in Django Admin

So filtern Sie in Django nach der ID des Foriegn-Schlüssels

So zeigen Sie Felder aus verschiedenen Tabellen durch Fremdschlüssel und natürlichen Schlüssel in der Django-Abfrageanweisung an

Django übergibt einen Fremdschlüssel von ListView an eine Detailansicht

Django - Filterfeld in der Detailansicht

So filtern Sie Wörterbuchschlüssel anhand der entsprechenden Werte

So filtern Sie Wörterbuchschlüssel anhand der entsprechenden Werte

So geben Sie einen Fremdschlüssel in der Zuordnungsabfrage an

MYSQL: So zeigen Sie Daten an, wenn der Fremdschlüssel implodiert (',')

Django Rest Framework - So veröffentlichen Sie Fremdschlüssel in ListCreateAPIView

So referenzieren Sie allauth user als Fremdschlüssel in Django

TOP Liste

heißlabel

Archiv