Zastosowałem poradę żeby podłączyć do Foreign Key całe UserP.
Wszystko działa oprócz dodania wpisu. (dodawania postu)
Models.py
class UserP(models.Model):
objects = None
user = models.OneToOneField(User, primary_key=True, verbose_name='user', related_name='profile', on_delete=models.CASCADE)
name = models.CharField(max_length=30, blank=True, null=True, unique=True)
bio = models.TextField(max_length=500, blank=True)
birth_date = models.DateField(null=True, blank=True)
location = models.CharField(max_length=100, blank=True, null=True)
picture = models.ImageField(upload_to='uploads/profile_pictures/', default='uploads/profile_pictures/default.png', blank=True)
followers = models.ManyToManyField(User, blank=True, related_name='followers')
class Post(models.Model):
body = models.TextField()
created_on = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(UserP, on_delete=models.CASCADE)
views.py
...
def post(self, request, *args, **kwargs):
posts = Post.objects.all().order_by('-created_on')
form = PostForm(request.POST)
if form.is_valid():
new_post = form.save(commit=False)
new_post.author = request.user
new_post.save()
...
zamieniłem na
new_post.author.pk = request.user.pk
i zgłasza błąd RelatedObjectDoesNotExist at /social/
Post has no author.
Dodam tylko że w template post.author.pk działa poprawnie
edit.
new_post.author = request.user
Zgłasza błąd
ValueError at /social/
Cannot assign "<SimpleLazyObject: <User: look>>": "Post.author" must be a "UserP" instance.