2 Stimmen

Django: Modelform mit Fremdschlüssel speichern mit to_field und ModelChoiceForm

Ich habe ein Problem beim Speichern eines ModelForm, wenn ich einen Fremdschlüssel verwende, der nicht auf den Primärschlüssel der zugehörigen Tabelle verweist (alte Schema-Probleme). Ich verwende to_field= für meinen Fremdschlüssel, so dass er mit einem Schlüssel verbunden ist, der nicht genau ein Schlüssel ist. Mein ModelForm-Fremdschlüssel verwendet ein ModelChoiceField mit einem Queryset und einem Widget von HiddenInput(), da das Standard-Rendering 2 Minuten dauert. Ich erhalte eine ungültige Auswahl, wenn ich versuche zu speichern, weil das Queryset den Primärschlüssel als Optionswert zurückgibt, wenn es das zugehörige Objekt (Checkin) zurückgibt. Wie kann ich noch ModelChoiceField mit dieser Einrichtung verwenden? Mein grundlegendes Schema unten.

class Checkin(models.Model):
    sampleid = models.CharField(unique=True, max_length=255, db_column='SampleID', primary_key=True)
    #shortsampleid is the field that is sometimes used as a sort of pk. 
    shortsampleid = models.IntegerField(unique=True, db_column='ShortSampleID') 
    company = models.CharField(max_length=765, db_column='Company', blank=True)
    ...

class Tblshipmentstore(models.Model):
    shortsampleid = models.ForeignKey(Checkin, to_field='shortsampleid', db_column='ShortSampleID')
    shipmentitem = models.CharField(max_length=765, db_column='ShipmentItem', blank=True)
    shipdate = models.DateField(null=True, db_column='ShipDate', blank=True)
    ...

class TblShipmentstoreForm(ModelForm):
    shortsampleid = forms.ModelChoiceField(queryset=Checkin.objects.all(), widget=forms.HiddenInput());

   class Meta:
       model = 'Tblshipmentstore'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X