In Django sono presenti due modelli correlati a OneToOneField (PrinterProfile e PrinterAdress). Sto cercando di creare un modulo con PrinterProfileForm, ma per qualche motivo NON passa i campi PrinterAddress nel modulo (non è reso da Django "magic" nel modello).ModelForm con OneToOneField in Django
Cosa devo fare affinché il mio PrinterProfileForm includa anche i campi da PrinterAddress (relativo OneToOneField)?
Grazie mille
class PrinterProfile(TimeStampedModel):
user = models.OneToOneField(User)
phone_number = models.CharField(max_length=120, null=False, blank=False)
additional_notes = models.TextField()
delivery = models.BooleanField(default=False)
pickup = models.BooleanField(default=True)
# The main address of the profile, it will be where are located all the printers.
class PrinterAddress(TimeStampedModel):
printer_profile = models.OneToOneField(PrinterProfile)
formatted_address = models.CharField(max_length=200, null=True)
latitude = models.DecimalField(max_digits=25, decimal_places=20) # NEED TO CHECK HERE THE PRECISION NEEDED.
longitude = models.DecimalField(max_digits=25, decimal_places=20) # NEED TO CHECK HERE THE PRECISION NEEDED.
point = models.PointField(srid=4326)
def __unicode__(self,):
return self.user.username
class PrinterProfileForm(forms.ModelForm):
class Meta:
model = PrinterProfile
exclude = ['user']
grazie mille! Life-saver ... Qualche idea sul perché non è stata presa automaticamente da Django ModelForm? È una decisione di progettazione o una specie di bug? Grazie – cyberjoac
Questa è la decisione di progettazione. Vi sono molte insidie nella gestione di più di un modello in un'unica forma (ad esempio: come gestire le relazioni tra modelli, come gestire campi con lo stesso nome in diversi modelli, come impostare campi aggiuntivi al di fuori del modulo). – catavaran
Ha senso, anche se capisco che funzioni con ForeignKeys (inline_formset), quindi qual è la differenza con onetooneField? Mi sembra meno difficile, vero? – cyberjoac