GenericForeignKey(TypeError: __init__() получил неожиданный аргумент ключевого слова 'object_id_fields'
Я создаю блог и хочу подсчитывать всех пользователей, которые посещают мою страницу, и отображать количество
пользователи, которые посещают эту страницу. и отображать контент по заполнению. я использую
GenericForeignKey
чтобы получить доступ к модели в моем пакете
на основе документации
hitcount
пакеты. После того, как я закончу создавать свои модели и попытаюсь запустить сервер, я получил следующую ошибку.
Файл «F: \ professional blog в django \ BLOG \ blog \ blogapp \ models.py», строка 48, в сообщении site_visitor = GenericForeignKey(TypeError: init() получил неожиданный аргумент ключевого слова 'object_id_fields'
Есть ли что-то, что я делаю неправильно, пожалуйста, помогите
model.py
from django.db import models from django.contrib.auth.models import
User from datetime import datetime, date from django.db.models.fields
import related from django.urls import reverse from
django.contrib.contenttypes.fields import GenericForeignKey from
hitcount.models import HitCountMixin, HitCount
# Create your models here. from django.core.exceptions import ValidationError
class Post(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(
User, on_delete=models.CASCADE, null=True, blank=True)
body = models.TextField()
category = models.ForeignKey(
Category, on_delete=models.CASCADE, default=1)
date = models.DateField(auto_now_add=True)
image = models.ImageField(upload_to="image", validators=[image_vailid])
likes = models.ManyToManyField(User, related_name="like_post")
site_visitor = GenericForeignKey(
HitCountMixin, object_id_fields="object_pk", content_type_field="content_type")
def numbers_of_likes(self):
return self.likes.count()
def __str__(self):
return self.title + '| ' + str(self.author)
def get_absolute_url(self):
return reverse("home")
Error:
File "F:\professional blog in django\BLOG\blog\blogapp\models.py",
line 48, in Post
site_visitor = GenericForeignKey( TypeError: __init__() got an unexpected keyword argument 'object_id_fields'
1 ответ
Проблема в том, что он говорит: вы пытаетесь создать класс с аргументом ключевого слова, который этот класс не принимает (источник) :
class GenericForeignKey(object):
# truncated
def __init__(self, ct_field="content_type", fk_field="object_id", for_concrete_model=True):
Как видите,
GenericForeignKey
class принимает только 3 аргумента (кроме класса):
ct_field
,
fk_field
а также
for_concrete_model
. Таким образом, только эти три могут использоваться в качестве аргументов ключевого слова.
Вам нужно либо передать аргументы без их ключевого слова, либо убедиться, что вы передаете этот аргумент в правильном месте. Начните с документации django и справочника по API .
Если вы не понимаете разницу между ключевым словом и позиционными аргументами, перейдите на страницы документации python: arguments .
Изменить: это неправильная часть вашего кода:
site_visitor = GenericForeignKey(
HitCountMixin, object_id_fields="object_pk", content_type_field="content_type")
Пожалуйста, прочтите ссылки, которые я вам предоставил.