Django: ForeignKey的to_field和db_column似乎无效

0 投票
1 回答
1942 浏览
提问于 2025-04-16 11:26

我正在尝试通过 to_fielddb_column 参数来获取 select 组件的字段值,但它们似乎没有效果。

这是我的模型:


class Employer(models.Model):
    e_name     = models.CharField(
                                  max_length = 40, 
                                  verbose_name = 'Name')

    e_lastname = models.CharField(
                                  max_length = 40, 
                                  verbose_name = 'Lastname')

    e_position = models.ForeignKey(
                                   to = Position,  
                                   db_field = 'p_name', # this is the thing I want to display as a select widget option
                                   verbose_name = 'Position')

结果我在 select 组件中只看到了模型的名称,而且 db_column 还指向了 Employer 模型,但实际上应该是 Position 模型。

这是哪里出错了,或者我不知道的新功能是什么呢?

苏尔坦

1 个回答

1

如果你只需要在一个HTML选择框中列出所有可用的Position选项,可以这样获取:

p_names = (p.name for p in Position.objects.all())

那么,怎么生成HTML呢?如果你使用的是forms.Form,可以用

POS_CHOICES = [(p.id, p.name) for p in Position.objects.all()]
class EmployerForm(forms.Form):
    p_choices = forms.CharField(widget=forms.Select(choices=POS_CHOICES))

然后在HTML模板中渲染它:

{{form.p_choices}}

可以看看表单模型表单的相关内容。

补充:我刚看到django-admin的标签。对于在管理区域怎么做,我不是很清楚,抱歉。

撰写回答