Tried the solutions provided in question asked by Daniel Costa.
Here is my models.py file
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"
The urls.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",
]
The issue here is if "integrations/" is removed from urls.py it does not interpret the mqttsubscription/
. While I update the lookup field it does not help.
Can someone point me what I am doing wrong here? Thanks in Advance