0

bekomme Dies ist ein Problem, das ich bei der Verwendung von Django knusprige Form habe.Crispy Formularfehler mit Fremdschlüssel, die ich von Queryset

Es folgt das Modellfeld (nur die notwendigen Codes angezeigt)“

class Product(models.Model): 
    name=models.CharField(max_length =200) 
    unit = models.ForeignKey(Unit,related_name='product_master_master_unit') 
    manufacturer=models.ForeignKey(Manufacturer,related_name='product_master_master_manufacturer') 
    tenant=models.ForeignKey(Tenant,related_name='product_master_user_tenant') 
    objects = TenantManager() 

Nun, dies ist meine Form, die ich vor der Verwendung knusprig-Form benutzt habe. Ich habe nur die Felder abzufragen, die an jetziger Mieter spezifische das geschieht nach folgendem:..

class ProductForm(forms.ModelForm): 
    def __init__(self,*args,**kwargs): 
     self.tenant=kwargs.pop('tenant',None) 
     super (ProductForm,self).__init__(*args,**kwargs) # populates the post 
     self.fields['unit'].queryset = Unit.objects.for_tenant(self.tenant).all() 
     self.fields['manufacturer'].queryset = Manufacturer.objects.for_tenant(self.tenant).all() 

    class Meta: 
     model=Product 
     exclude =('slug', 'tenant') 

Dies funktioniert gut, wenn ich nicht knusprig Form verwenden Sie jedoch zur Verwendung von knusprigen den Fehler bilden ich erhalte, ist, dass der Fremdschlüssel Feld, das sich auf Einheit und Hersteller bezieht (die für einen bestimmten Mandanten abgefragt werden), wird nicht angezeigt Jede Option in der knusprigen Form. Kann ich das irgendwie knusprig zeigen oder muss ich diese knusprige Form ganz aufgeben?

Nur um Ihnen zu helfen, mache ich in meiner Form, was man mit djangos "ForeignKey.limit_choices_to" tun könnte, wenn es dynamische Auswahl erlaubt. Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Habe es gerade mit den folgenden Sachen gelöst.

Normalerweise nennen wir Form mit dem folgenden Code:

from .forms import Formname 
form=Formname() 

Nun, wenn ich dies tun, irgendwie, das init Konstruktor in crispyform nicht mit den aktuellen Anforderungsdaten erhalten.

Wenn ich jedoch den folgenden Code verwenden, erhält der crispyform die Benutzerdaten:

from .forms import Formname 
form=Formname(request.user.whatever_you_need) 

Diese detaillierte Antwort für zukünftige Referenz. Hoffe, das würde helfen.

Verwandte Themen