在Django模型表单中使用Model属性

前端之家收集整理的这篇文章主要介绍了在Django模型表单中使用Model属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用模型属性,如模型形式中的字段,但到目前为止还没有任何运气.结果是表单只呈现模型字段,而不是我定义的属性.知道如何让表单识别添加到模型中的属性吗?我希望将latitude属性添加为表单中的另一个字段.

Models.py:

class Plot(models.Model):
        plot_id = models.AutoField(primary_key=True)
        plot_number = models.IntegerField(validators=[MinValueValidator(1)],null=False,unique=True)
        geometry = models.PointField(srid=2163,null=True,blank=True) 
        objects = models.GeoManager()

        @property
        def latitude(self):
            self.geometry.transform(4326)
            return self.geometry.y

        @latitude.setter
        def latitude(self,latitude):
            self.geometry.y = latitude

Forms.py:

class InventoryPlotForm(ModelForm):
    class Meta:
        model = ForestInventoryPlot
        exclude = {"geometry"}

解决方法

您的属性不是Field实例,因此ModelForm无法自动为其生成表单字段.您需要在InventoryPlotForm上明确定义纬度字段,并在表单的__init__和save方法中管理其检索和更新.或者,您可以实现自己的Widget类,并告诉InventoryPlotForm将其用于几何字段:
class InventoryPlotForm(ModelForm):
    class Meta(object):
        widgets = {
            'geometry': MyGeometryWidget,}
        ...
    ...

猜你在找的Python相关文章