2017-10-03 1 views
2

Twitter 시스템과 같은 시스템을 구현하려고합니다. 한 명의 사용자가 따라 다니고 다른 많은 사용자가 따라 올 수 있습니다. 여러 가지 방법을 시도했지만 오류가 계속 발생합니다. 현재, 폼 전체에 디버거 나 프린트 문을 떨어 뜨릴 때마다 나는 깨끗한 메소드를 사용하지 않으며 kwargs도 값으로 채워지지 않습니다.간단한 Django Form

나는 양식에 인수로 follower & following 전달 단지 __init__에이를 할당 할 수 있기를 원하지만 모든 것이 잘못된 것입니다. Javascript (React & Redux)에서 응답을 받으면 follower & following "이 필드는 필수입니다."라는 오류가 있습니다.

class User(AbstractBaseUser, PermissionsMixin): 
    username = models.CharField(max_length=100, unique=True) 
    email = models.EmailField(unique=True) 
    is_active = models.BooleanField(default=True) 
    is_staff = models.BooleanField(default=False) 
    is_admin = models.BooleanField(default=False) 
    date_joined = models.DateTimeField(auto_now=True) 

    objects = UserManager() 

    USERNAME_FIELD = 'email' 
    REQUIRED_FIELDS = ['username'] 

    class Meta: 
     verbose_name = 'user' 
     verbose_name_plural = 'users' 

class UserFollow(models.Model): 
    follower = models.ForeignKey('User', models.CASCADE, related_name='follows') 
    following = models.ForeignKey('User', models.CASCADE, related_name='followed_by') 

    class Meta: 
     unique_together = ('follower', 'following') 

    def to_user(self): 
     return { 
      'id': self.pk, 
      'follower': self.follower.pk, 
      'following': self.following.pk 
     } 

조회수

def follow(request, id): 
    following = User.objects.get(pk=id) 
    form = UserFollowForm(follower=request.user, following=following) 
    if form.is_valid(): 
     user_follow = form.save() 
     return JsonResponse({'user_followed': following.to_user()}) 
    return JsonResponse({'error': form.errors}, status=400) 

양식

모델 : 여기

는 내가 지금까지있어 무엇

답변

3

양식에 데이터를 전달하지 않았으므로 바인딩되지 않고 유효성이 검사되지 않습니다.

그러나 왜 여기 양식을 사용하고 싶은지 이해할 수 없습니다. 게시 된 데이터를 사용자가 가져 오는 것 같지 않으며 수행 할 유효성 검사가 없습니다. UserFollow 인스턴스를 직접 생성하면됩니다.

def follow(request, id): 
    following = User.objects.get(pk=id) 
    user_follow = UserFollow.objects.create(follower=request.user, following=following) 
    return JsonResponse({'user_followed': user_follow.to_user()}) 
+0

데이터는 '데이터 = {....}'와 같은 인수를 의미합니까? 그리고 두 번째 요점은 흥미로운 아이디어입니다. 저는 모든 것을 위해 양식을 사용한다는 생각에 익숙해졌으며, 특별히 의도 한 것을 기억하지 않았습니다. –

+0

답변에서 언급했듯이, 당신이 그것을 다루는 방식으로, 양식을 전달하는 것은 쓸모가 없습니다. 하지만 폼을 시작하려면,''form = UserFollowForm (data = request.POST)'''를해야합니다. 필드는 키 이름에서 채워지고 다른 필드는 kwargs로 전송됩니다. – Bestasttung