Я использую postgres и django, и у меня есть таблица, определенная ниже в postgres
Column | Type | Modifiers
---------------------+------------------------+-----------
id | integer |
context_name | character varying(100) |
context_description | character varying(100) |
context_priority | character varying(1) |
users | integer |
Ниже приведена соответствующая модель в django
class Contexts(models.Model):
context_name = models.CharField(max_length=50)
context_description = models.TextField()
context_priority = models.CharField(max_length=1)
users = models.PositiveIntegerField(null=False)
Примечание: Я не могу запустить makemigrations
, так как у меня есть некоторые проблемы с настройками. Поэтому я создаю таблицу вручную в postgres и определяю связанную модель в django.
Теперь эта таблица в основном представляет собой группу context_name
, которая может иметь много пользователей. Поэтому я получаю запрос JSON и добавляю пользователя в таблицу. Ниже приведен JSON
{
"user" : 5,
"action" : "add",
"context_name": "network debug",
"context_description" : "Group for debugging network issues",
"context_priority": "L"
}
Вот код, который обрабатывает операцию
@csrf_exempt
def context_operation(request):
user_request = json.loads(request.body.decode('utf-8'))
if request.method == "POST":
try:
if user_request.get("action") == "add":
conv = Contexts.objects.create(
context_name=user_request.get("context_name"),
context_description=user_request.get("context_description"),
context_priority=user_request.get("context_priority"),
users=user_request.get("user")
)
#print(conv.users)
except Exception as e:
print("Context saving exception", e)
return HttpResponse(0)
return HttpResponse(1)
Теперь, когда я запускаю этот код и приходит запрос, я могу успешно сохранить пользователя 5
в группе network debug
, но если я получаю тот же запрос снова, но с другим идентификатором пользователя 7
, он создает снова та же группа и назначает пользователя 7
. Так у меня есть две одинаковые группы, но разные пользователи.
Как я могу гарантировать, что если context_name
одинаково, я могу добавить любое количество пользователей?