我正在用Django写一个简单的事件应用程序。我有注册和登录过程。
我有两个模型。模型创建者具有OneToOneField
属性User
。
Event
模型具有属性creator
作为ForeignKey
含有特定User
。
我怎么了 创建新用户时,我想同时创建Creator
模型的新实例,并以该用户身份登录并创建新事件时,希望将Event中的creator的值设置为该用户。
我该怎么做?models.py
及views.py
以下:
models.py
class Event(models.Model):
SPORT = (
('Football', 'Football'),
('Volleyball', 'Volleyball'),
('Basketball', 'Basketball'),
('Futsal', 'Futsal'),
('Tennis', 'Tennis'),
('Handball', 'Handball'),
('Ice Hockey', 'Ice Hockey'),
('Paintball', 'Paintball')
)
creator = models.ForeignKey(Creator, null=True, on_delete=models.SET_NULL)
sport = models.CharField(max_length=20, null=True, choices=SPORT)
event_name = models.CharField(max_length=30)
event_date = models.DateTimeField(default=date.today())
end_event_date = models.DateTimeField(default=date.today())
current_members = models.IntegerField(default=1)
total_members = models.IntegerField(default=0)
event_location = models.CharField(max_length=50)
cost = models.FloatField(default=0, max_length=5)
description = models.CharField(max_length=300, blank=True)
def __str__(self):
return self.event_name
class Creator(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
views.py
@unauthenticated_user
def registerPage(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Account created successfully!')
return redirect('login')
context = {'form': form}
return render(request, 'events/register.html', context)
要Creator
在注册时创建一个新的:
views.py
...
from django.contrib.auth import User
from .models import Creator
...
...
if form.is_valid():
new_user = form.save()
Creator.objects.create(user=new_user)
messages.success(request, 'Account created successfully!')
要将创建者添加到中Event
,您需要get()
使用模型中当前登录的用户(request.user
)Creator
,然后creator
在创建新用户时将其传递到字段中Event
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句