Python_Django-添加参与事件选项-如何?

Python_Django-添加参与事件选项-如何?,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我的web应用程序中有3个模型。事件(自制)、用户(从django.contrib.auth.models导入)和事件出席(自制)。 EventAttention是一个连接事件和用户表的表(通过外键person\u key和Event\u key) 我想创建一个按钮,将连接用户(登录者)和事件。它应该在表中插入一行。 我试图让它工作,但不幸的是,它什么也没做。现在我可以通过ADMIN选项卡将数据放入EventAttention表中 有人能查一下我的密码并给我一些建议吗 型号 class Even

我的web应用程序中有3个模型。事件(自制)、用户(从django.contrib.auth.models导入)和事件出席(自制)。 EventAttention是一个连接事件和用户表的表(通过外键person\u key和Event\u key)

我想创建一个按钮,将连接用户(登录者)和事件。它应该在表中插入一行。 我试图让它工作,但不幸的是,它什么也没做。现在我可以通过ADMIN选项卡将数据放入EventAttention表中

有人能查一下我的密码并给我一些建议吗

型号

class Event(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    place = models.CharField(max_length=100)
    start = models.DateTimeField()
    price = models.IntegerField()
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title


class EventAttendance(models.Model):
    person_key = models.ForeignKey(User, on_delete=models.CASCADE)
    event_key = models.ForeignKey('Event', on_delete=models.CASCADE)
    attended = models.BooleanField()

    def __str__(self):
        return "%s - %s" % (self.event_key, self.person_key)
表格`

class EventForm(forms.ModelForm):
    class Meta:
    model = Event
    fields = ('title', 'text','place','start','price',)

class EventAttendanceForm(forms.ModelForm):
    class Meta:
    model = EventAttendance
    widgets = {
        'event_key': forms.HiddenInput(),
    }
    fields = ['person_key', 'event_key', 'attended',]

class UserCreateForm(UserCreationForm):
    email = forms.EmailField(required=True)
    class Meta:
    model = User
    fields = ( "username", "email" )
查看

def event_attendance(request,pk):
    event = get_object_or_404(Event, pk=pk)
    #if request.method == "POST":
    form = EventAttendanceForm(request.POST)
    EventAttendance = form.save(commit=False)
    EventAttendance.person_key = user.id
    EventAttendance.event_key = event.id
    EventAttendance.attended = 1
    EventAttendance.save()
    return redirect('event_detail', pk=event.pk)

    return render(request, 'events/post_detail.html', )

 def event_new(request):
     if request.method == "POST":
        form = EventForm(request.POST)
        if form.is_valid():
           event = form.save(commit=False)
           event.author = request.user
           event.published_date = timezone.now()
           event.save()
           return redirect('event_detail', pk=event.pk)
     else:
          form = EventForm()
     return render(request, 'events/post_edit.html', {'form': form})
模板-我在哪里使用它

{% extends 'events/base.html' %}

{% block content %}
  <div class="event">
    {% if event.published_date %}
        <div class="date">
          <p> <u>Pridane:</u> {{ event.published_date }} </p>
          <p> </p>
          <p> <u>Autor:</u> {{ event.author }} </p>

          <br>
        </div>
    {% endif %}
    <a class="btn btn-default" href="{% url 'event_edit' pk=event.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
    <a class="btn btn-default" href="{% url 'event_remove' pk=event.pk %}"><span class="glyphicon glyphicon-remove"></span></a>
    <a class="btn btn-default" href="{% url 'event_attendance' pk=event.pk %}"><span class="glyphicon glyphicon-ok"></span></a>
    <h1>{{ event.title }}</h1>
    <p><u>Miesto</u>: {{ event.place }} </p>
    <p><u>Zaciatok</u>: {{ event.start }} </p>
    <p><u>Cena</u>: {{ event.price }} </p>
    <br>

    <p><u>Zucastneni:</u> {{attendance}}</p>
    <br>
    <p><u>Blizsie Informacie:</u></p>
    <p>{{ event.text|linebreaksbr }}</p>
  </div>
{% endblock %}

解决方案位于my urls.py文件中:

以前的值:

url(r'^post/(?P<pk>\d+)/$', views.event_attendance, name='event_attendance') 
url(r'^post/(?P\d+/$),views.event\u attention,name='event\u attention')
新值:

url(r'^post/(?P<pk>\d+)/attendance/$', views.event_attendance, name='event_attendance')
url(r'^post/(?P\d+)/attention/$,views.event\u attention,name='event\u attention')

也许将来它会为某个人服务

您是否从post获得了这些值?您的表格显示在哪里?你试过打印请求了吗。POST@Exprator-我试着把它打印出来,这就是我得到的。。。是的,您的查询没有返回任何内容,您需要更改查询。现在我有点迷路了。我尝试过这样做,但是DB内部没有发生任何事情(没有创建新实例):我编辑了我的帖子,您可以在那里看到我的新函数。您正在尝试将用户的事件输入EventAttention表,对吗?用户登录并选择和事件,然后提交表单?这将输入正确的值吗?
def event_attendance(request):
    event = get_object_or_404(Event)
    attendance = EventAttendance(person_key = request.user , 
    event_key = event.id, attended = True)
    attendance.save(force_insert=True)
    transaction.commit()
    return render(request, 'events/post_detail.html')
url(r'^post/(?P<pk>\d+)/$', views.event_attendance, name='event_attendance') 
url(r'^post/(?P<pk>\d+)/attendance/$', views.event_attendance, name='event_attendance')