Tôi có một mô hình được định nghĩa như thế này:đối tượng 'RelatedManager' không có thuộc tính
class UserDetail(models.Model):
user = models.ForeignKey(User, db_index=True, unique=True, related_name='details')
favourites = models.ManyToManyField(Article, related_name='favourited_by', blank=True)
Và tôi đang cố gắng để làm một cái gì đó như thế này:
article = get_object_or_404(Article, pk=id)
request.user.details.favourites.add(article)
Tại sao không cho nó hoạt động?
Tôi nhận được lỗi này:
'RelatedManager' object has no attribute 'favourites'
Tôi đoán details
không phải là loại đúng, nhưng tại sao không phải là nó? Và làm cách nào tôi có thể thực hiện một truy vấn như vậy?
Oh! Điều đó có ý nghĩa hơn nhiều bây giờ. Tôi đoán rõ ràng là * tôi * rằng người dùng chỉ có một 'UserDetail', nhưng tôi cho rằng nó không được chỉ định ở bất cứ đâu. Cảm ơn bạn. – mpen
Nếu bạn thay đổi mô hình của mình để thay vì sử dụng ForeignKey, bạn đã sử dụng OneToOneField, bạn sẽ có thể thực hiện chính xác như bạn mong đợi. OneToOneFields giống như ForeignKeys ngoại trừ vì chúng chỉ là một đối tượng liên quan, Django sẽ cho phép bạn truy cập trực tiếp đối tượng thay vì thông qua một người quản lý liên quan. Xem https://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield – mbargiel