Django:模型外键和选择框小部件

发布于 2024-10-16 08:55:45 字数 1651 浏览 9 评论 0原文

我有 2 个模型 WorkerPosition 当我添加新工人时,应该有一个选择框,其中包含 Positions 模型中列出的位置。

我尝试使用 Select 小部件,但 django 失败并出现 no such property 异常。

模型


# Position model
class Position(models.Model):
    p_name   = models.CharField(max_length = 40, unique = True, verbose_name = 'Position')
    p_salary = models.IntegerField(max_length = 11, verbose_name = 'Salary')

    fields = ('p_name', 'p_salary')


# Worker model
class Worker(models.Model):
    w_name     = models.CharField(max_length = 40, verbose_name = 'Name')
    w_lastname = models.CharField(max_length = 40, verbose_name = 'Lastname')
    w_position = models.ForeignKey(to = Position, to_field = 'p_name', verbose_name = 'Position')
    w_dept     = models.ForeignKey(to = Department, to_field = 'd_name' verbose_name = 'Department')

表单


class WorkerForm(ModelForm):
    class Meta:
        model = Worker

        widgets = {
            'w_name'    : TextInput(attrs = {'class': 'e name'}),
            'w_lastame' : TextInput(attrs = {'class': 'e lastname'}),
            'w_position': Select(attrs = {'class': 'e position'}),
            'w_dept'    : Select(attrs = {'class': 'e department'}),
        }

admin.py 中的定义


class WorkerAdmin(admin.ModelAdmin):
    form = WorkerForm

list_display = ('w_name', 'w_lastname', 'w_position', 'w_dept')

<代码>

如何根据外键显示选择框出了什么问题?

苏丹

I've 2 models Worker and Position when I add a new worker there should be selectbox with the positions listed in Positions model.

I tried to use Select widget but django fails with no such property exception.

Models


# Position model
class Position(models.Model):
    p_name   = models.CharField(max_length = 40, unique = True, verbose_name = 'Position')
    p_salary = models.IntegerField(max_length = 11, verbose_name = 'Salary')

    fields = ('p_name', 'p_salary')


# Worker model
class Worker(models.Model):
    w_name     = models.CharField(max_length = 40, verbose_name = 'Name')
    w_lastname = models.CharField(max_length = 40, verbose_name = 'Lastname')
    w_position = models.ForeignKey(to = Position, to_field = 'p_name', verbose_name = 'Position')
    w_dept     = models.ForeignKey(to = Department, to_field = 'd_name' verbose_name = 'Department')

Form


class WorkerForm(ModelForm):
    class Meta:
        model = Worker

        widgets = {
            'w_name'    : TextInput(attrs = {'class': 'e name'}),
            'w_lastame' : TextInput(attrs = {'class': 'e lastname'}),
            'w_position': Select(attrs = {'class': 'e position'}),
            'w_dept'    : Select(attrs = {'class': 'e department'}),
        }

Definition in admin.py


class WorkerAdmin(admin.ModelAdmin):
    form = WorkerForm

list_display = ('w_name', 'w_lastname', 'w_position', 'w_dept')

What goes wrong how to make select box appear according to a foreign key?

Sultan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪漫之都 2024-10-23 08:55:45

您可以尝试在表单内重新声明表单的字段(确保使用与模型中相同的名称)并在其中设置小部件和属性?

You could try just re-declaring the field for the form inside the form (making sure to use the same name as it is in the Model) and setting the widget and attrs in there?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文