Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
django oneTomay save many models before one model
it will save orderMain before save orderDetail,can i change it? I want save orderDetail before orderMain. -
django connect models to json data
I want to save my json data in models field how can this possible i try using url but could not given proper result.. please suggest any method to resolve this.If i use get method then this will get the data that will show in command line but not in simplified method. i follow this https://ask.metafilter.com/154077/How-do-I-read-a-JSON-object-in-Python but this will also does not solve my problem. #My alert [{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"45"},{"BillNo":"43","BillDetails":"my bill","Amount":"600"}] <script> $("#btnjson").click(function () { var array1 = []; $("tbody tr").each(function () { //var amount = $(this).find('td').eq(2).text().trim(); //if (!isNaN(amount) && parseFloat(amount) > 0) { var firstTableData = {}; firstTableData.BillNo = $(this).find('td').eq(0).text().trim(); firstTableData.BillDetails = $(this).find('td').eq(1).text().trim(); firstTableData.Amount = $(this).find('td').eq(2).text().trim(); array1.push(firstTableData); //} }); { jQuery.get( "/jsondata/", { data: array1 } ); alert(JSON.stringify(array1)); }; //e.preventDefault(); }); }); </script> Bill No: <input type="text" name="billno" id="billNo" autocomplete="off"> Amount: <input type="text" name="amount2" id="amnt" pattern="[0-9]+" title="please enter amount" autocomplete="off"> <br> Bill Details: <input type="text" id="billDetails" name="billdetails" style="margin: 1px 0px 20px; width: 850px; height: 42px;" autocomplete="off"> <button type="button" id="btnAdd" class="button" value="Add">Add</button> <button type="button" id="btn2" class="button" value="Complete all entries">Complete All entries</button> <br><br> <table name="txt" id="tempResult" align="center"> <thead> <tr> <th>Bill No</th> <th>Bill Details</th> <th>Amount</th> <th>Action</th> </tr> </thead> <tbody> </tbody> <tfoot> <tr> <td></td> <td></td> <td></td> <td>Total : <span id="total"></span></td> … -
django template sensitive with upper or lower case file folder names
on unbutn 18, I clone a repo from github: https://github.com/ShakalakaB/Python_journey_code/tree/back_up-user_accounts_completed/learning_log(it works well on windows) run it, comes "TemplateDoesNotExist" error(TemplateDoesNotExist at / Learning_logs/index.html) so i change the filename "learning_logs"(/learning_logs/templates/learning_log) to "Learning_logs", but it comes the "TemplateDoesNotExist" error(TemplateDoesNotExist at /learning_logs/base.html) seem like it need "learning_logs“ ”Learning_logs" at the same time, how can i solve it -
No module named 'django.core.context_processors'
I'm trying to implement django-session-security in my django project. After following the instructions, I get an error: Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 2018-10-22 11:30:21,297 django.request ERROR Internal Server Error: /accounts/login/ Traceback (most recent call last): File "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 156, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 154, in _get_response response = response.render() File "/home/joel/.local/lib/python3.6/site-packages/django/template/response.py", line 106, in render self.content = self.rendered_content File "/home/joel/.local/lib/python3.6/site-packages/django/template/response.py", line 83, in rendered_content content = template.render(context, self._request) File "/home/joel/.local/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/home/joel/.local/lib/python3.6/site-packages/django/template/base.py", line 169, in render with context.bind_template(self): File "/usr/lib/python3.6/contextlib.py", line 81, in __enter__ return next(self.gen) File "/home/joel/.local/lib/python3.6/site-packages/django/template/context.py", line 242, in bind_template processors = (template.engine.template_context_processors + File "/home/joel/.local/lib/python3.6/site-packages/django/utils/functional.py", line 37, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/home/joel/.local/lib/python3.6/site-packages/django/template/engine.py", line 85, in template_context_processors return tuple(import_string(path) for path in context_processors) File "/home/joel/.local/lib/python3.6/site-packages/django/template/engine.py", line 85, in <genexpr> return tuple(import_string(path) for path in context_processors) File "/home/joel/.local/lib/python3.6/site-packages/django/utils/module_loading.py", line 17, in import_string module = import_module(module_path) File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked ModuleNotFoundError: No module named … -
live search table data using django and ajax
Hi I almost tried all internet resources to bind my table while making live filter of employees in a table, but continuously it's throwing bug. The technology that I'm using is django for back end and ajax/jquery for the front end.. Please help -
I want to make a persistent instance in django
I want to make a persistent instance in django. When django is executed, a class I made will be instantiated and can be used on other classes. Could you let me know how to do that? class A: def init(self): pass def next_step(self): ... ... return next_step_value intance_of_A = A() # instance of class A ==== views.py from django.http import JsonResponse from xxxx import instance_of_A class next_step(TemplateView): def get(self, request, kwargs): return JsonResponse(**instance_of_A.next_step()) -
Python get-pip.py Installation Unsuccessful
I am new to Python and trying to install version 3.7.1 on my linux server through SSH. However, it appears that pip and setuptools were not included by default when I installed it. I am trying to install pip now. I uploaded get-pip.py to the server and tried to run the python get-pip.py install command, but when I did, it returned this message. Traceback (most recent call last): File "get-pip.py", line 20890, in <module> main() File "get-pip.py", line 197, in main bootstrap(tmpdir=tmpdir) File "get-pip.py", line 82, in bootstrap import pip._internal File "/tmp/tmp9e_PY_/pip.zip/pip/_internal/__init__.py", line 40, in <module> File "/tmp/tmp9e_PY_/pip.zip/pip/_internal/cli/autocompletion.py", line 8, in <module> File "/tmp/tmp9e_PY_/pip.zip/pip/_internal/cli/main_parser.py", line 8, in <module> File "/tmp/tmp9e_PY_/pip.zip/pip/_internal/cli/cmdoptions.py", line 75 binary_only = FormatControl(set(), {':all:'}) I have no idea what it means and haven't found anything about it online, I was hoping you guys could help. -
django.db.utils.OperationalError: (1426, "Too big precision 200 specified for 'price'. Maximum is 65.")
I am trying to DecimalField I set the parameter max_digits to 200, price = models.DecimalField(max_digits=200, decimal_places=2) It showed the error: django.db.utils.OperationalError: (1426, "Too big precision 200 specified for 'price'. Maximum is 65.") price = models.DecimalField(max_digits=65, decimal_places=2) So I changed it to 65, but it still it shows the same error: django.db.utils.OperationalError: (1426, "Too big precision 200 specified for 'price'. Maximum is 65.") -
upper or lower filename influence TemplateDoesNotExist error
a strange TemplateDoesNotExist error on Django 2.1.2, templates are store as following: manage.py project_dir |_ settings.py |_ urls.py |_ app1(learning_logs) \_ views.py |_ urls.py |_ models.py |_ templates(learning_logs) \_ app1 \_ base.html \_ index.html and the templates in settings.py as below: TEMPLATE_DIRS: [os.path.join(BASE_DIR, 'templates')], but when i run it, it said TemplateDoesNotExist at /Learning_logs/index.html, but when i change the filefolder inside "templates" to "Learning_logs" , the error changes to "TemplateDoesNotExist at /learning_logs/base.html" , how should i solve it? -
Importing csv in fresh sqlite3 to work with new project django 2.1
I really didn't know how to phrase that question properly, but hopefully I can make things clear here. My initial goal was to import a CSV file, inside of my new sqlite3 database, and have my app model.py work with it, This is what the table looks like (this was imported from a csv file) I renamed the Table to fit the naming format that the app would take appname: locate Here is a picture of the locate/model.py file: I named each variable to be identical with the tables that were in my imported CSV file After this I of course placed the app inside my settings and ran a migration and got hit with the following error: django.db.utils.OperationalError: there is already another table or index with this name: locate_professor Does anyone know how I would be able to properly configure this!! thanks! -
Register user form django
I'm trying to add more fields to the Register form that generates, I already add the name, last name and email fields to my form, now I wan to add the user that I'm creating to a group but I don't know how to do that, my code is the next. from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm class RegistrationForm(UserCreationForm): email = forms.EmailField(required=True) class Meta: model = User fields = ( 'username', 'first_name', 'last_name', 'email', 'password1', 'password2' ) def save(self, commit=True): user = super(RegistrationForm, self).save(commit=False) user.first_name = self.cleaned_data['first_name'] user.last_name = self.cleaned_data['last_name'] user.email = self.cleaned_data['email'] if commit: user.save() return user This is my forms.py Any idea of how to add a user group to this? -
Return fileresponse after return (or render) of view
I'm executing the code that creates a file and returns a FileResponse (with the path to the created document) using the multiprocessing.Process object inside a view class, to be more specific, inside the post function that gets the data I need to the creation of the file out of a form. The function runs in the background, so as the code continues the view redirects to another view with just some text (the "your download will start soon" page). Problem is, though the file is actually created, it doesn't get downloades (even though it has the as_attachment parameter set). How can return effectively the FileResponse? -
Unpack a list in Django Template
How do you unpack a list inside a list within a Django template? My views.py runs a query which then takes a bunch of lists and appends them together to get a larger list to pass to a template. I am using get_context_data to do this. When I view {{timedata}} in my template, it is a list within a list. How can I unpack it, so that it is a single list? views.py class recoaterDataListView(LoginRequiredMixin,ListView): model = Data template_name = 'charts.html' login_url = 'login' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) query = Data.objects.filter(author_id = self.kwargs ["author"], ProcessIdentifier_data=self.kwargs['pi']) RecoaterList = [] TimeStamps = [] for data in query: RecoaterList.append(data.RecoaterData) TimeStamps.append(data.recoaterTimeStamp) context['recoaterdata'] = RecoaterList context['timedata'] = TimeStamps return context -
django test views that involve invocation of a signal
I have 2 apps, 1 for auth and the other for storing profile related info auth app models.py class User(AbstractUser): # contains the User related info signals.py @receiver(post_save, sender=User) def create_related_profile(sender, instance, created, *args, **kwargs): if instance and created: instance.profile = Profile.objects.create(user=instance) profiles app models.py class Profile(models.Model): user = models.OneToOneField(User) # other info while testing update user method. class TestUserRetrieveUpdateView(APITestCase): def setUp(self): self.test_username = 'testuser' self.test_email = 'test@example.com' self.test_password = 'testpassword' # We want to go ahead and originally create a user. self.test_user = get_user_model().objects.create_user(self.test_username, self.test_email, self.test_password) self.auth_headers = {'HTTP_AUTHORIZATION': f"Bearer {self.test_user.token}"} # URL for creating an account. self.detail_url = reverse('users:detail') # URL for creating an account. self.create_url = reverse('users:signup') # Request factory self.request_factory = RequestFactory() @patch('yapoll.users.signals.create_related_profile') def test_udpate_user_with_preexisting_username(self, mock): data_1 = { 'username': 'testuser2', 'email': 'test_1@example.com', 'password': 'testuser' } response_1 = self.client.post(self.create_url, data_1, format='json') data = {'username': 'testuser2'} # TODO: Complete this test case handling signals response = self.client.put(self.detail_url, data, format='json', **self.auth_headers) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(get_user_model().objects.count(), 2) self.assertTrue('errors' in response.data) self.assertTrue('username' in response.data['errors']) self.assertEqual(len(response.data['errors']['username']), 1) While doing this I am the getting the following error. django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist: User has no profile. However, I have tested the user creation and profile creation subsequently using signals. It's working fine. -
django(1046, 'No database selected')
i'm working on django project but i failed to connect mysql to django,this is what i've done 1.settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'Name':'testdb', 'USER':'root', 'PASSWORD':'qcds1234', 'HOST':'localhost', 'PORT':'3306' } } 2.use pymysql instead mysqldb import pymysql pymysql.install_as_MySQLdb() 3.i've checked mysql is connected and database exits enter image description here 4.but sadly django.db.utils.InternalError: (1046, 'No database selected') I can't figure out why? -
Django .update() on queryset containing a duplicated objects
I need to increment a tickets field in multiple User objects at once. The thing is, the queryset can contain the same user multiple times. When that's the case, I want tickets to be incremented as many times as the user can be found in the queryset. If I use an F() expression, the .update() method only increment the field ONCE, regardless of the number of occurences of the user in the queryset. Here is a code sample: >>> user_list = User.objects.filter(reservations__is_active=True) >>> user_list <QuerySet [<User: USER_1>, <User: USER_1>]> # duplicated object in qs >>> user_list.values_list('tickets') <QuerySet [(1,), (1,)]> >>> user_list.update(tickets=F('tickets')+1) 1 >>> user_list.values_list('tickets') <QuerySet [(2,), (2,)]> # I should read 3 tickets instead Can F() expressions be used in this context? If not, how could I achieve this simply? -
django, python, jquery autocomplete - Select a valid choice. That choice is not one of the available choices
I am trying to save a field "company" which is an autocomplete field. I'm using ajax jquery, but when trying to save the form I get the error: " Select a valid choice. That choice is not one of the available choices." . I can only save it if I input the company id (ie, 1, 2) instead of the name "Jack in the Box". Any idea why this is happening? Models.py class Question(models.Model): question_text = models.CharField(max_length=200, validators=[validate_badwords]) pub_date = models.DateTimeField('date published') company = models.ForeignKey(Company, on_delete=models.CASCADE, null=True, default=None) class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200, validators=[validate_badwords]) votes = models.IntegerField(default=0) class Company(models.Model): name = models.CharField(max_length=100) description = models.TextField(default=None, null=True) B2B = "B2B" B2A = "B2A" B2C = "B2C" BUSINESS_CHOICES = ((B2B, "B2B"), (B2A, "B2A"), (B2C, "B2C")) business = models.CharField(max_length=3, choices=BUSINESS_CHOICES, default=B2A) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) View.py class QuestionCreate(CreateView): template_name = 'polls/question_form.html' model = Question form_class = QuestionForm success_url = reverse_lazy('polls:index') def get(self, request, *args, **kwargs): self.object = None form_class = self.get_form_class() form = self.get_form(form_class) choice_form = ChoiceInlineFormSet() return self.render_to_response( self.get_context_data(form=form, choice_form=choice_form)) def post(self, request, *args, **kwargs): self.object = None form_class = self.get_form_class() form = self.get_form(form_class) choice_form = ChoiceInlineFormSet(self.request.POST) if (form.is_valid() and choice_form.is_valid()): return self.form_valid(form, choice_form) else: return … -
Adding and removing fields from a django form dynamically
I have a django form with an inline formset and I'd like to give the user the ability to add/remove the fields 'approach_type' and 'approach_number' This a snippet of the form: <div class="form-group"> <div class="input-group-sm"> <label class="text-muted">Approaches</label> <div class="form-control pl-4 pt-2"> <div class="row form-row"> <input type="hidden" name="approach_set-TOTAL_FORMS" value="1" id="id_approach_set-TOTAL_FORMS" /><input type="hidden" name="approach_set-INITIAL_FORMS" value="0" id="id_approach_set-INITIAL_FORMS" /><input type="hidden" name="approach_set-MIN_NUM_FORMS" value="0" id="id_approach_set-MIN_NUM_FORMS" /><input type="hidden" name="approach_set-MAX_NUM_FORMS" value="1000" id="id_approach_set-MAX_NUM_FORMS" /> <input type="hidden" name="approach_set-0-id" id="id_approach_set-0-id" /> <div class="col pr-5>"><select name="approach_set-0-approach_type" class="form-control" id="id_approach_set-0-approach_type"> <option value="" selected>---------</option> <option value="ILS">ILS</option> <option value="CATII">CAT II</option> <option value="CATIII">CAT III</option> </select></div> <div class="col pr-5>"><input type="number" name="approach_set-0-number" min="0" class="form-control" id="id_approach_set-0-number" /> </div> <div class="input-group-append"> <button class="btn btn-success add-form-row">+</button> </div> <!-- <div class="col pr-5>"><input type="checkbox" name="approach_set-0-DELETE" class="form-control" id="id_approach_set-0-DELETE" /></div> --> </div> and here is the JS from this tutorial: https://medium.com/@taranjeet/adding-forms-dynamically-to-a-django-formset-375f1090c2b0 <script type='text/javascript'> function updateElementIndex(el, prefix, ndx) { var id_regex = new RegExp('(' + prefix + '-\\d+)'); var replacement = prefix + '-' + ndx; if ($(el).attr("for")) $(el).attr("for", $(el).attr("for").replace(id_regex, replacement)); if (el.id) el.id = el.id.replace(id_regex, replacement); if (el.name) el.name = el.name.replace(id_regex, replacement); } function cloneMore(selector, prefix) { var newElement = $(selector).clone(true); var total = $('#id_' + prefix + '-TOTAL_FORMS').val(); newElement.find(':input').each(function() { var name = $(this).attr('name').replace('-' + (total-1) + '-', '-' + total + '-'); var id … -
Associating Objects and Users in Django using Generic Views
I'm attempting to associate a collection of Objects with a logged in user. Urls.py urlpatterns = [ path('new/collection', views.CollectionCreate.as_view(), name="create"), path('edit/collection/<int:pk>', views.CollectionUpdate.as_view(), name='update'), path('delete/collection/<int:pk>', views.CollectionDelete.as_view(), name='delete'), ] Views.py This page generates a form where a logged in User enters the title of the Collection, and creates it. As it is right now, the Collection does not get associated with any user. I know that this is the point in which I need to attach the created Collection to the logged in User but I have reached a stop point. class CollectionCreate(CreateView): model = Collection template_name = 'upload/collection_form.html' fields = [ 'title' ] Models.py In this class, a Collection is being associated with a default Django User. class Collection(models.Model): user = models.OneToOneField(User, blank=True, null=True, on_delete=models.CASCADE) title = models.CharField(max_length=140) tags = models.CharField(max_length=140) upload_date = models.DateTimeField(auto_now_add=True) def get_absolute_url(self): return reverse('gallery:detail', kwargs={'pk': self.pk}) def __str__(self): return self.title + ' by ' + self.author class Meta: ordering = ['-upload_date'] Given a form.ModelForm, I know I can access the passed data by using form = ModelForm(request.POST) inside a def post(self, ...) function. I don't know how to do that in a CreateView. -
How do I have multiple exclude conditions?
What is the correct way to do the following query: sites = Site.objects.all().exclude(itempage__isnull=True or itempage__pk=1) -
Django: Multiple Databases Using DATABASE_ROUTERS
I am using 2 different databases in my Django project: 1) 'default' is a PostgreSQL 2) 'analysis' is an Azure SQL Database I am also using Django-Tenants to allow a multi-tenancy approach. Now, the second database is supposed to only have special analytical database tables, whereas the core application runs on the first database. settings.py: DATABASES = { 'default': { 'ENGINE': 'tenant_schemas.postgresql_backend', 'NAME': 'xxx', 'USER': 'xxx', 'PASSWORD': 'xxx', 'HOST': 'localhost', 'PORT': '', }, 'analysis': { 'ENGINE': 'sql_server.pyodbc', 'NAME': 'xxx', 'USER': 'xxx', 'PASSWORD': 'xxx', 'HOST': 'xxx', 'PORT': 'xxx', 'OPTIONS': { 'driver': 'ODBC Driver 17 for SQL Server', 'MARS_Connection': 'True', } } } DATABASE_ROUTERS = ( 'apps.power_bi.routers.AnalysisRouter', 'tenant_schemas.routers.TenantSyncRouter', ) Since the analytical functionality is available in a specific Django app, I configured the following router: class AnalysisRouter: def db_for_read(self, model, **hints): if model._meta.app_label == 'analysis': return 'analysis' return None def db_for_write(self, model, **hints): if model._meta.app_label == 'analysis': return 'analysis' return None def allow_migrate(self, db, app_label, model_name=None, **hints): if app_label == 'analysis': return db == 'analysis' return None I would expect that during the migrate schema command, the analysis application will sync with the second database analysis, instead, all applications will create the tables according to their model definitions. What am I missing … -
Import using Django admin import-export throws error
I am trying to import data through xls or JSON file. Django throws error while trying to import the file using the Django admin import-export functionality. Following are the codes, Models.py from django.db import models from django.utils import timezone class Questions(models.Model): q_no_id = models.AutoField(primary_key=True) category = models.CharField(max_length=100) question = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def print_all(self): res = self.objects.all() for r in res: print(r.Question) I have added 'import_export' in the Installed_Apps section in the settings.py admin.py from import_export.admin import ImportExportModelAdmin from django.contrib import admin from .models import Questions from import_export import resources class QuestionResource(resources.ModelResource): class Meta: model = Questions fields = ('category', 'question') @admin.register(Questions) class QuestionAdmin(ImportExportModelAdmin): pass The images for reference are as follows: Error Input xls file Why am I getting the error? I even tried removing the data from the q_no_id and created_at fields (as they are autofields) but still the error is persistent. -
Docker / Django: pipenv x requirements
I currently setup my Django project in Docker. I used pipenv so far, therefore I don't have a requirements.txt but a pipfile. Anyone knows how I have to adjust my Dockerfile in order to install all dependencies? I followed the official tutorial. But it doesn't say anything about pipenv, if I don't use requirements.txt - it's my case. FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ -
Recombee batch does not send all the data
I am using recombees API for a recommendation and there is a batch method to send all the user data to the API. The code for the following: for i in range(0,len(list_of_ratings)): name = str(list_of_ratings[i].user) series = str(list_of_ratings[i].series) rate = list_of_ratings[i].rating print(name + ' ' + series + ' ' + str(rate)) request = AddRating(name, series, rate ,cascade_create=True) requests.append(request) try: client.send(Batch(requests)) except APIException as e: print(e) except ResponseException as e: print(e) except ApiTimeoutException as e: print(e) except Exception as e: print(e) But the problem is it does not send all the data. There are 946 data objects that I have in a Django model but the first time when i ran this only 20 were sent and during the 2nd time only 6. I dont know whats causing the issue. Any help is appreciated. -
Django - How to add a custom field to a FormView
I have been trying to make a Form for item removal but I don't know how to connect the field to the model, here's what I'm doing: class StudentForm(forms.ModelForm): queryset = Student.objects.filter().values('name') choices = [('', var) for var in queryset] names = forms.ChoiceField(choices=choices) class Meta: model = Student fields = '__all__' I used this class to connect to the Student model and use its fields, however I want to add a field of my own to it, which is names = forms.ChoiceField(choices=choices), but what I want to know is, how would I connect this field that lists all names, for example, to the form to make it so that I could pick an object's name and then I could change/delete it accordingly? class StudentRegister(generic.FormView): template_name = 'students/student_form.html' form_class = StudentForm success_url = '/' def form_valid(self, form): form.save(commit=True) return super().form_valid(form) This is my views.py and as you can see, it automatically sets the values of the form because those are already "tied in" to a model field, but not the choice field I added. How would I correct this?