Django - 使用外键引用非主键

时间:2013-03-22 10:20:12

标签: django django-models django-forms

我有一个django模型:

class ObservationMedia(models.Model):
    observation = models.ForeignKey(Observation)    
    audio_file = AudioFileField   ( upload_to=audio_dir, blank=True, null=True )
    photo_file = models.ImageField( upload_to=img_dir,   blank=True, null=True )

    def __unicode__(self):
        return "obsv-media "+str(self.pk)

观察的地方是:

class Observation(GUIDModel):  
    guid = models.CharField(unique=True, max_length=36, default=uuid.uuid4)
    # many more fields here

是否可以ModelForm ObservationMedia Observation传递给guid的值不是其主键,而是guid字段?我想到的解决方案是制作{{1}}主键。有可能避免这种情况吗?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作,但目前尚未对此进行测试。

class ObservationMediaForm(ModelForm):
    """ Observation Media Model Form """

    class Meta:
        model = models.ObservationMedia
        fields = ('observation', 'audio_file', 'photo_file')

    def __init__(self, *args, **kwargs):
        super(ObservationMediaForm, self).__init__(*args, **kwargs)
        if self.instance:
            self.fields['observation'].initial = models.Observation.objects.get(pk=self.instance.observation).guid