代码之家  ›  专栏  ›  技术社区  ›  Ankit Jaiswal

带有选定行的Django模型窗体

  •  0
  • Ankit Jaiswal  · 技术社区  · 14 年前

    class Event(db.Model):
       creator = db.ReferenceProperty(User, required= True)
       title = db.TextProperty(required = True)
       description = db.TextProperty(required = True)
    
    class Ticket(db.Model):
       user = db.ReferenceProperty(User, required = True)
       event = db.ReferenceProperty(Event, required = True)
       total_seats = db.IntegerProperty(required = True,default=0)
       available_seats = db.IntegerProperty(required = True,default=0)
    

    现在我想从这个模型中创建一个表单,它应该包含仅由登录用户拥有的事件。当前它显示一个包含所有事件的下拉列表。

    请建议。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Manoj Govindan    14 年前

    如果这是一个纯Django应用程序(而不是appengine),我会这样做。你也许会发现它很有用。

    关键是要覆盖 __init__() 你的方法 ModelForm 类提供当前登录的用户实例。

    # forms.py
    class TicketForm(forms.ModelForm):
        def __init__(self, current_user, *args, **kwargs):
            super(TicketForm, self).__init__(*args, **kwargs)
            self.fields['event'].queryset = Event.objects.filter(creator = 
                 current_user)
    

    然后可以在创建窗体实例时提供用户实例。

    ticket_form = TicketForm(request.user)