我不知道为什么首先收到此错误,然后检查整个代码三次
我正在从Django View调用信号以在模型中创建一个对象以进行分析。
models.py
RECEIVER_REQUEST_TYPE = (
('ABOX', 'Android Bounding Box'),
('ENTR', 'Web Bounding Box'),
)
class BaseAnalytics(models.Model):
"""Common filds for all the tables"""
ip_address = models.CharField(max_length=220, blank=True, null=True)
content_type = models.ForeignKey(
"contenttypes.ContentType", on_delete=models.CASCADE, blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
# status = models.IntegerField(blank=True, null=True)
execution_time = models.TimeField(verbose_name='Time Taken for each query to execute')
class ReceiverAnalytics(BaseAnalytics):
"""receiver analytics"""
longitude = models.FloatField(blank=True, null=True)
latitude = models.FloatField(blank=True, null=True)
request_type = models.CharField(max_length=4, choices = RECEIVER_REQUEST_TYPE)
def __str__(self):
return str(self.id)
class Meta:
verbose_name = 'Receiver Analytics'
verbose_name_plural = 'Receiver Analytics'
# SIGNAL
def receiverAnalyticsSignal(sender, request, request_type, time,
longitude, latitude ,*args, **kwargs):
pdb.set_trace()
c_type = ContentType.objects.get_for_model(sender)
new_call_obj = ReceiverAnalytics.objects.create(
ip_address = get_client_ip(request),
content_type = c_type,
request_type = request_type,
longitude = longitude,
latitude = latitude,
execution_time = time,
)
print(new_call_obj)
object_viewed_signal.connect(receiverAnalyticsSignal)
Signal.py
from django.dispatch import Signal
object_viewed_signal = Signal(providing_args=['request'])
Views.py
object_viewed_signal.send(
Receive, request_type='NRBY', longitude=longitude,
latitude=latitude, time=total_time, request=request
)
以下是字段的类型
Receive > model_name mark
NRBY > String enum
longitude, latitude, time > float fields
这是我得到的错误:
TypeError:预期的字符串或类似字节的对象