Как обрабатывать поле user в Django при выполнении Post-запроса к модели, доступ к которой осуществляется с помощью API-ключа?
models.py:
class Hosts (models.Model) :
host_label = models.CharField (max_length=64,
verbose_name = "Host Label"
)
host_activation_request = models.CharField (max_length = 400,
verbose_name = 'Activation Request',
blank=True, null=True)
host_developer_email = models.CharField (max_length = 400,
verbose_name = 'Developer Email',
blank=True, null=True)
class Meta:
verbose_name = "Available Host"
unique_together = [['host_label', 'host_developer_email']]
serializers.py:
class HostSerializer(serializers.ModelSerializer):
class Meta:
model = Hosts
fields = ('host_label','host_activation_request')
views.py:
class CreateHost(CreateAPIView):
serializer_class = HostSerializer
def generate_activation_request(self, feature, customer_ref="Isode"):
config = get_active_config() #this function has been imported at the top
command_list = [os.path.join(config.generate_activation_binary_directory, "generate_activation_request")]
import subprocess
proc = subprocess.run(command_list, universal_newlines=True, capture_output=True)
self.result = proc.stdout
def post(self, request, *args, **kwargs):
print(request.data)
self.generate_activation_request(feature=request.data["feature"])
request.data['host_activation_request'] = self.result
return self.create(request, *args, **kwargs)
Пользователь может войти на сайт и создать там Host, и поле host_developer_email будет его email, а два других поля будут тем, что он введет в форму, поскольку host_developer_email был установлен как скрытое поле.
Теперь я создал конечную точку под названием /api/host, на которую я могу отправить post-запрос для создания экземпляра Host, но я применил библиотеку djangorestframework-api-key
Итак, мой запрос от Insomnia (можно использовать и Postman, я думаю) выглядит следующим образом:
В заголовке есть ключ API в авторизации, который я не буду показывать.
Теперь, когда я отправляю этот Post запрос, поле host_developer_email является NULL, что я ожидал - но мне нужно, чтобы оно имело что-то, чтобы иметь возможность захватить правильную строку в будущем при использовании этих данных в машинах/серверах
Или это неправильный путь? Должен ли я иметь две отдельные модели Hosts - одну для пользователей на сайте и другую для сторонних бэкендов и сервисов (т.е. машин), причем в последней нет поля host_developer_email, а поле host_label уникально?