캔트 저장 :장고 : 확장 된 사용자 모델 나는 다른 모델이라는 프로파일을 사용하여 장고 사용자 모델을 확장 한
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
chosenCharity = models.ForeignKey('meta.Charity', db_column='chosenCharityid', related_name='user_chosenCharity')
bio = models.TextField(max_length=500, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(null=True, blank=True)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
나는 다음과 같은 오류가 아래의 코드와 뷰에서 새 사용자를 만들려고 "(1048, '열'chosenCharityid는 'null 일 수 없습니다") "
@transaction.atomic
def register(request):
selectedTeams = StraightredTeam.objects.filter(Q(teamid=request.session['team1id']) | Q(teamid=request.session['team2id'])).order_by('teamname')
request.POST.get('currentCharities')
next_url = request.POST.get('next', request.GET.get('next', reverse('straightred.payment')))
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
new_user = form.save()
나는 사용자가 이미 생성했을 때 내가 사용할 수 있어야합니다 알고
user = User.objects.get(pk=user_id)
user.profile.chosenCharity = 12
user.save()
그러나 사용자를 만들 때이 작업을 수행하는 방법을 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다. 다음은
등록 양식의 복사본을하는 것입니다 :class RegistrationForm(BootstrapModelForm, UserCreationForm):
email_opt_in = forms.BooleanField(label='Receive DWAD e-mail updates', required=False)
def __init__(self, *args, **kwargs):
super(RegistrationForm, self).__init__(*args, **kwargs)
# The default Django user model doesn't require these fields to be set
# but we do.
self.fields['email'].required = True
def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email__iexact=email).exists():
raise ValidationError('There is already an account registered with this e-mail address.')
return email
class Meta:
model = User
fields = ['first_name', 'last_name', 'email', 'username']
자선 모델 :
class Charity(models.Model):
name = models.CharField(max_length=50, unique=True)
website = models.URLField()
enabled = models.BooleanField(default=True)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
verbose_name_plural = 'charities'
chosenCharity은 null 일 수 없습니다. 프로필에 자선 단체 ID가 필요합니다. 옵션 인 경우 selectedCharity 필드에서 null = True를 설정하십시오. –
안녕하세요 Zap, 그것은 선택 사항이 아니지만 그냥보기에서 설정하는 방법을 모르겠습니다. 이견있는 사람? –
요청에 사용할 수있는 자선 단체 ID가 있습니까? POS 데이터가 있습니까? post_save 신호를 사용하는 대신 new_user = form.save() –