2014-12-14 3 views
3

В настоящее время я работаю над веб-сайтом, который позволит пользователю взаимодействовать с аппаратным блоком, который они могут настроить в своем доме. В настоящее время я регистрирую свою учетную запись с помощью django-allauth, и это работает по желанию. Мой следующий шаг - позволить пользователю связать свой аппаратный блок с их учетной записью. Я надеюсь реализовать это, используя какой-то уникальный ключ, состоящий из символов (например, Sr3D- $ 3tr-SQ2Q-CB24), который может быть связан только с одной учетной записью. Я не хочу, чтобы это было частью модели User (для регистрации), скорее, то, что они могут связать позже, например, в модели профиля (связанной с моделью пользователя).Как реализовать регистрацию устройства устройства в учетной записи пользователя Django

Я много искал для пакетов django или примеров, которые реализуют аналогичную функциональность, но не повезло. Я считаю, что это довольно стандартная функциональность, например, когда вам нужно зарегистрировать игру, которую вы покупаете (для доступа к онлайн-функциям), используя ключевую фразу, которая поставляется с вашей покупкой.

Может ли кто-нибудь указать мне на некоторые примеры или пакеты того, как это будет реализовано с помощью Django?

[EDIT] После первого ответа BingsF ниже я подумал, что должен быть более точным в функциональности, которой я пользуюсь. В основном я хотел бы иметь таблицу в базе данных, где я мог бы добавить законные ключи вместе с именем пользователя пользователя, который его регистрирует (изначально «Null», пока пользователь не зарегистрируется с ключом). Затем, когда пользователь регистрируется, мне нужна проверка, чтобы убедиться, что они ввели законный ключ, и он не был зарегистрирован ранее.

Пользователь должен иметь возможность регистрировать несколько устройств.

+0

Сколько ключей на пользователя? – sax

+0

Реализация, на которую я нацелен, позволит пользователю регистрировать как можно больше устройств (которые они покупают). Поэтому технически неограниченное число. – matben243

ответ

2

Моим подходом было бы, вероятно, создать новую модель с внешним ключом, ссылающимся на модель пользователя.

Это будет выглядеть примерно так (в вашем models.py):

class Device(models.Model): 
    username = models.ForeignKey(User) 
    hardware_key = models.CharField(max_length=32, primary_key=True) 

Затем на вашем веб-страницы, когда пользователь загружает новый аппаратный ключ вы могли бы сделать:

from models import Device, User 

try: 
    device = Device.objects.get(hardware_key=<key>) 
except ObjectDoesNotExist: 
    # deal with case where user tries to register non-existent key 
else: 
    try: 
     device.username = <user> 
     device.save() 
    except IntegrityError: 
     # deal with case where key is already registered to another user 

См. here для получения дополнительной информации о создании/использовании моделей

+0

Я решил, что мне придется принять этот подход, если бы не было доступных пакетов для обработки этого для меня. Два момента: 1. Я хотел бы иметь таблицу в базе данных, где я мог бы добавить законные ключи вместе с именем пользователя пользователя, который его регистрирует (изначально «Null» явно). Затем, когда пользователь регистрируется, мне нужна проверка, чтобы убедиться, что они ввели законный ключ, и он не был зарегистрирован ранее. Должен ли я использовать какую-то модель «Устройство» для обработки этой функции? 2. Мне кажется, что мне плохой дизайн, чтобы создать несколько профилей для каждой клавиши, которую регистрирует пользователь? – matben243

+0

1. Использование таблицы as-is, с Null, поскольку пользователь изначально кажется хорошим выбором. Чтобы проверить, что ключ еще не был зарегистрирован, просто проверьте, содержит ли строка для этого ключа Null или другой пользователь. Чтобы принудительно использовать один пользователь за ключ, установите primary_key = True в качестве параметра в hardware_key (изменено выше). 2. Это правда, возможно, тогда таблица должна называться «Устройство» и иметь таблицу «Профиль» для другого материала, связанного с их учетной записью пользователя. Имея только два столбца в таблице, он создает правильно настроенные отношения «Один-ко-многим» между пользователем и аппаратным ключом. – BingsF

Смежные вопросы