Не удалось определить URL для гиперссылки на отношения django
Попробовал решения, приведенные в вопросе, заданном Даниэлем Коста.
Вот мой файл models.py
class Integrations(models.Model):
integration_id = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
integration_type = models.CharField(primary_key=True, max_length=256)
def __str__(self):
return self.integration_type
class Meta:
ordering = ["integration_type"]
verbose_name = "Integration"
verbose_name_plural = "Integrations"
def get_default_mqtt():
return Integrations.objects.get(integration_type="MQTT")
class MQTTSubscription(models.Model):
mqtt_subscription_name = models.CharField(
max_length=256, verbose_name="Subscription Name"
)
mqtt_url = models.CharField(max_length=256, verbose_name="Mqtt Host")
integration_type = models.ForeignKey(
Integrations, default=get_default_mqtt, on_delete=models.PROTECT
)
def __str__(self):
return self.mqtt_subscription_name
class Meta:
ordering = ["mqtt_subscription_name"]
verbose_name = "MQTT Subscription"
Урлы.py
integrations_list = IntegrationsViewSet.as_view({"get": "list", "post": "create"})
integrations_detail = IntegrationsViewSet.as_view(
{"get": "retrieve", "put": "update", "delete": "destroy"}
)
mqtt_list = MQTTSubscriptionViewSet.as_view({"get": "list", "post": "create"})
mqtt_detail = MQTTSubscriptionViewSet.as_view(
{"get": "retrieve", "put": "update", "delete": "destroy"}
)
urlpatterns = [
path("integrations/", integrations_list, name="integrations_list"),
path("integrations/<str:integration_type>/", integrations_detail, name="integrations_detaial"),
path("mqttsubscription/", mqtt_list, name="mqtt_list"),
path("mqttsubscription/<str:mqtt_subscription_name>/", mqtt_detail, name="mqtt_detail"),
]
Views.py
class IntegrationsViewSet(viewsets.ModelViewSet):
serializer_class = IntegrationsSerializer
queryset = Integrations.objects.all()
lookup_field = "integration_type"
class MQTTSubscriptionViewSet(viewsets.ModelViewSet):
serializer_class = MQTTSubscriptionSerializer
queryset = MQTTSubscription.objects.all()
lookup_field = "mqtt_subscription_name"
serializers.py
class IntegrationsSerializer(serializers.ModelSerializer):
class Meta:
model = Integrations
fields = ["integration_type"]
class MQTTSubscriptionSerializer(serializers.ModelSerializer):
lookup_field = "integration_name"
class Meta:
model = MQTTSubscription
fields = [
"mqtt_subscription_name",
"mqtt_url",
"integration_type",
]
Проблема в том, что если убрать "integrations/" из urls.py, то он не интерпретирует mqttsubscription/
. Пока я обновляю поле поиска, это не помогает.
Может ли кто-нибудь указать мне, что я делаю неправильно? Заранее спасибо