【问题标题】:Filter the Staff name and display the staff list in frontend过滤人员姓名并在前端显示人员列表
【发布时间】:2021-07-05 09:35:19
【问题描述】:

我正在尝试仅过滤员工用户并将员工列表显示到前端,普通用户可以选择员工姓名并输入价格。

我这个函数的视图文件很大,所以我在这里分享 gist 文件Views.py

谁能帮我解决这个问题?谢谢

模型.py

class DailyFood(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateTimeField(default=now)
    total = models.PositiveIntegerField()


class PurchaseHistory(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='histories')
    date = models.DateTimeField(default=now)
    balance = models.PositiveIntegerField()
    hand_cash = models.PositiveIntegerField()

HTML

<form action="" method="post">
  {% csrf_token %}

    <div class="modal-body">
       <div class="modal-body">
           <div class="form-group">
                <label>Total price</label>
                <input type="number" name="price" class="form-control" placeholder="Enter price">
                <label>Staff</label> <!-- #show staff list here-->
           </div>
       </div>
    </div>
    <div class="modal-footer">
       <button type="submit" class="btn btn-success">Submit</button>
       <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
    </div>
</form>

【问题讨论】:

    标签: python django django-views django-templates


    【解决方案1】:

    您的 github 链接未对我打开,但您可以使用 model_name__user__is_staff 过滤您的员工​​用户并将其发送到您的模板

    解决方案 2:

    您可以通过这行代码过滤您的用户:

    staff = User.objects.filter(is_staff=True)
    

    并像这样将它们发送到您的模板:

    {% for stf in staff %}
        {{stf.username}}
    {% endfor %} 
    

    希望我的回答有用;)

    【讨论】:

    • 老兄,正如我在您的 views.py 中看到的那样,您不会将员工作为您的上下文发送到您的模板。在您渲染模板的行中,将 'staff':staff 放入 {}。在你的模板中你可以说{% if not request.user.is_staff %}{%endif%}并使用这个块中的模板代码作为我的第二个解决方案。 @ToufiqurRahman
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2012-11-20
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多