简体   繁体   English

Django ModelForm:如何在下拉字段中显示用户特定的数据?

[英]Django ModelForm: How to display user specific data in a drop-down field?

I have a drop-down field called Label as part of a model called Birthday . 我有一个名为Label的下拉字段,作为名为Birthday的模型的一部分。 My problem is that the drop-down field shows the Labels from all users. 我的问题是,下拉字段显示所有用户的标签。 How can I make sure it only shows the Labels specific to the User? 如何确保它仅显示特定于用户的标签?

I assume that a query is required in the form model but I have no clue how to do this. 我假设在表单模型中需要查询,但是我不知道如何执行此操作。

forms 形式

class BirthdayForm(forms.ModelForm):

    class Meta:
        model = Birthday
        fields = ('name', 'day', 'label')

class LabelForm(forms.ModelForm):

    class Meta:
        model = Label
        fields = ('tag',)

models 楷模

class Label(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    tag = models.CharField(max_length=25)

    def __str__(self):
        return self.tag

class Birthday(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=25, default="")
    day = models.DateField()
    label = models.ForeignKey(Label, on_delete=models.SET_NULL, default=0, null=True, blank=True) 

    def __str__(self):  
        return self.name

view 视图

@login_required
def index(request):
    if request.method == "POST":
        form = BirthdayForm(request.POST)
        if form.is_valid():
            birthday = form.save(commit=False)
            birthday.user = request.user
            birthday.save()
            return redirect('index')
    else:
        form = BirthdayForm()
    birthday = Birthday.objects.filter(user=request.user)
    username = request.user
    return render(request, 'bd_calendar/index.html', {'form': form, 'birthday': birthday, 'username': username })

template 模板

            <form method="POST">{% csrf_token %}
                <table border="0">
                    {{ form }}
                </table>
                <button class="submitButton" type="submit">Submit</button>
            </form>

try this 尝试这个

class BirthdayForm(forms.ModelForm):

    class Meta:
        model = Birthday
        fields = ('name', 'day', 'label')
    def __init__(self, user, *args, **kwargs):
        super(BirthdayForm, self).__init__(*args, **kwargs)
        self.fields['label'].queryset = Label.objects.filter(user=user)

hope it helps 希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 Django 模板的下拉列表中显示值? - How to Display value in Drop-down in Django Template? Django中如何动态显示下拉菜单中的菜单名称 - how to display the menu name in drop-down menu dynamically in Django 蟒蛇Django。 如何在 name_znat 字段中使用下拉元素输入用户选择的文本 - Python django. How can I enter the text selected by the user with a drop-down element in the name_znat field 如何在Django ModelForm中获取仅与该用户的下拉列表相关的外键 - How to get the foreign keys related to drop down only of that user in Django ModelForm 如何将数据库中的特定值显示为第一个下拉列表选择选项 - How to display a specific value from a database as the first drop-down list selection option 当用户在文本字段中键入时,如何打开 combobox 的下拉列表? - How to open drop-down list of combobox when user types in text field? 如何从 Django 的下拉列表中从用户的选定选项中进行查询 - How to make a query from a selected choice from the user from a drop-down list in Django 如何在不扩展用户 Model 的 Django ModelForm 中自定义默认用户 Model 的用户名字段的显示? - How do I customize the display of username field of default User Model in Django ModelForm without extending User Model? 如何设计层次结构(树)表以显示下拉菜单? - How to design hierarchy (tree) table to display Drop-down menu? 如果在 Django 中不可用,如何在下拉列表中显示类别并隐藏? - How To Show Category in Drop-down and Hide if Not Available in Django?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM