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'